Make sure menu_shell->button gets reset to 0 when we bail out early here
authorMichael Natterer <mitch@imendio.com>
Tue, 11 Sep 2007 17:38:12 +0000 (17:38 +0000)
committerMichael Natterer <mitch@src.gnome.org>
Tue, 11 Sep 2007 17:38:12 +0000 (17:38 +0000)
2007-09-11  Michael Natterer  <mitch@imendio.com>

* gtk/gtkmenu.c (gtk_menu_button_release): Make sure
menu_shell->button gets reset to 0 when we bail out early here
instead of chaining up, so it is in a consistent state for the
next press/release in GtkMenuShell. Fixes bug #449371.

svn path=/trunk/; revision=18795

ChangeLog
gtk/gtkmenu.c

index cb23b0a4363ede1d81efcc3ec535738ce1b55a10..ae969b7942fde44cb5e8d10294fe3e476482b626 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2007-09-11  Michael Natterer  <mitch@imendio.com>
+
+       * gtk/gtkmenu.c (gtk_menu_button_release): Make sure
+       menu_shell->button gets reset to 0 when we bail out early here
+       instead of chaining up, so it is in a consistent state for the
+       next press/release in GtkMenuShell. Fixes bug #449371.
+
 2007-09-10  Kjartan Maraas  <kmaraas@gnome.org>
 
        * gtk/gtkentry.c: Fix some typos. Closes bug #475400.
index 7d44efbfd30ac41f75000cee5f275df64472ccc9..deb3a46c5193dd237dcb0ba2b243d70c1fa27675 100644 (file)
@@ -2710,7 +2710,17 @@ gtk_menu_button_release (GtkWidget      *widget,
    */
   if (GTK_IS_MENU_SHELL (gtk_get_event_widget ((GdkEvent *) event)) &&
       pointer_in_menu_window (widget, event->x_root, event->y_root))
-    return TRUE;
+    {
+      /*  Ugly: make sure menu_shell->button gets reset to 0 when we
+       *  bail out early here so it is in a consistent state for the
+       *  next button_press/button_release in GtkMenuShell.
+       *  See bug #449371.
+       */
+      if (GTK_MENU_SHELL (widget)->active)
+        GTK_MENU_SHELL (widget)->button = 0;
+
+      return TRUE;
+    }
 
   return GTK_WIDGET_CLASS (gtk_menu_parent_class)->button_release_event (widget, event);
 }